package com.tabnet.dao;

import java.util.Map;

import com.tabnet.beans.commande.Commande;
import com.tabnet.beans.commande.LigneCommande;
import com.tabnet.beans.produit.Produit;

/**
 * <p>Interface DAOLigneCommande</p>
 * @author Corentin, Cyril, Neven, Anabella
 * */
public interface DAOLigneCommande {
	/**
	 * <p>Procédure getLigneCommandes<br />
	 * Recupere les lignes de commandes d'une commande</p>
	 * @param pCommande : un objet commande
	 * @throws DAOException
	 * @return Map>Integer, LigneCommande>
	 */
	public Map<Integer, LigneCommande> getLigneCommandes(Commande pCommande) throws DAOException;
		
	/**
	 * <p>Procédure addLigneCommande<br />
	 * Creer une LigneCommande dans la base de données à la commande avec le statut "En Cours"</p>
	 * @param pLigneCommande : un objet LigneCommande
	 * @param pProduit : un objet Produit
	 * @throws DAOException
	 */
	public void addLigneCommande(LigneCommande pLigneCommande, Produit pProduit) throws DAOException;

	/**
	 * <p>Procédure updLigneCommande<br />
	 * Met a jour la quantité d'une LigneCommande d'une commande</p>
	 * @param pLigneCommande : objet LigneCommande
	 * @param pMinus : true si on décrémente, false sinon
	 * @throws DAOException
	 */
	public void updLigneCommande(LigneCommande pLigneCommande, boolean pMinus) throws DAOException;
	
	/**
	 * <p>Procédure delLigneCommande<br />
	 * Supprime la commande ayant le statut "En Cours"</p>
	 * @param pLigneCommande : objet LigneCommande
	 * @throws DAOException
	 */
	public void delLigneCommande(LigneCommande pLigneCommande) throws DAOException;
}
